package com.gep.controlador;

import java.util.List;

import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Toolbarbutton;
import org.zkoss.zul.Window;

import com.gep.dto.PecaDTO;
import com.gep.dto.SolicitacaoDTO;
import com.gep.dto.StatusDTO;
import com.gep.session.PecaBORemota;
import com.gep.session.SolicitacaoBORemota;
import com.gep.session.UsuarioBORemota;

public class ControladorHomeAlmoxarifeZul extends Window {

	/**
  * 
  */
	private static final Logger LOGGER = Logger
			.getLogger(ControladorHomeAlmoxarifeZul.class);

	private static final long serialVersionUID = 1L;

	private List<PecaDTO> listaEstoqueMinimo;

	public PecaBORemota pecaBORemota;

	public SolicitacaoBORemota solicitacaoBORemota;

	public UsuarioBORemota usuarioBORemota;

	private List<SolicitacaoDTO> listaBuscaSol;
	
	private List<SolicitacaoDTO> listaBuscaDev;

	private SolicitacaoDTO solicitacaoDTObusca;

	public ControladorHomeAlmoxarifeZul() {
		try {
			InitialContext ctx;

			ctx = new InitialContext();
			this.pecaBORemota = (PecaBORemota) ctx
					.lookup("ejb/gep/PecaBORemota");
			this.solicitacaoBORemota = (SolicitacaoBORemota) ctx
					.lookup("ejb/gep/SolicitacaoBORemota");
			this.usuarioBORemota = (UsuarioBORemota) ctx
					.lookup("ejb/gep/UsuarioBORemota");
			solicitacaoDTObusca = new SolicitacaoDTO();
		} catch (Exception exp) {
			exp.printStackTrace(System.out);
		}
	}

	public void calcularQuantidadePecas() {
		listaEstoqueMinimo = pecaBORemota.buscarPecaEstoqueMinimo();

		Integer quantidade = listaEstoqueMinimo.size();

		Toolbarbutton labelqtd = (Toolbarbutton) this
				.getFellow("qtdEstoqueMinimo");
		labelqtd.setLabel("" + quantidade);

	}

	public void calcularQuantidadeSolicitacao() {
		StatusDTO statusDTO = new StatusDTO();
		statusDTO = statusDTO.retornaStatus(StatusDTO.SOLICITADO);
		solicitacaoDTObusca.setStatusDTO(statusDTO);
		listaBuscaSol = solicitacaoBORemota
				.consultarSolicitacao(solicitacaoDTObusca);
		if (listaBuscaSol != null) {
			Integer quantidade = listaBuscaSol.size();

			Toolbarbutton labelqtd = (Toolbarbutton) this
					.getFellow("qtdSolicitado");
			labelqtd.setLabel("" + quantidade);
		}
		statusDTO = new StatusDTO();
		statusDTO = statusDTO.retornaStatus(StatusDTO.DEVOLVIDO);
		solicitacaoDTObusca.setStatusDTO(statusDTO);
		listaBuscaDev = solicitacaoBORemota
				.consultarSolicitacao(solicitacaoDTObusca);
		if (listaBuscaDev != null) {
			Integer quantidade = listaBuscaDev.size();

			Toolbarbutton labelqtd = (Toolbarbutton) this
					.getFellow("qtdDevolvido");
			labelqtd.setLabel("" + quantidade);
		}

	}

	public List<PecaDTO> getListaBuscaEstoqueMinimo() {
		return listaEstoqueMinimo;
	}

	public void setListaBuscaEstoqueMinimo(List<PecaDTO> listaBuscaEstoqueMinimo) {
		this.listaEstoqueMinimo = listaBuscaEstoqueMinimo;
	}

	public void redirecionarPecas() {
		if (listaEstoqueMinimo.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("booleanEstoqueMinimo", true);
			Executions.sendRedirect("/zul/manutencao/pecas.zul");
		}
	}

	public void redirecionarSolicitado() {
		if (listaBuscaSol.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("listaSolicitacao", listaBuscaSol);
			Executions.sendRedirect("/zul/solicitacao/consultaSolicitacao.zul");
		}
	}
	
	public void redirecionarDevolvido() {
		if (listaBuscaDev.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("listaSolicitacao", listaBuscaDev);
			Executions.sendRedirect("/zul/solicitacao/consultaSolicitacao.zul");
		}
	}

}
